const fs = require('fs');
const dbPath = './db.json';

// 获取学生列表
exports.find = (callback) => {
    fs.readFile(dbPath, (err, data) => {
        if (err) {
            callback(err);
        }
        callback(null, JSON.parse(data).students);
    });
}

// 添加学生
exports.save = (student, callback) => {
    fs.readFile(dbPath, (err, data) => {
        if (err) {
            callback(err);
        }
        // 读取的文件数据
        const students = JSON.parse(data).students;
        // 处理id
        student.id = students[students.length - 1].id + 1;
        students.push(student);
        let result = JSON.stringify({
            students: students
        });
        // 写入文件
        fs.writeFile(dbPath, result, (err) => {
            if (err) {
                callback(err);
            }
            callback();
        });
    }); 
}

// 编辑学生
exports.update = (studentItem, callback) => {
    fs.readFile(dbPath, (err, data) => {
        if (err) {
            callback(err);
        }
        // id转为数字
        studentItem.id = parseInt(studentItem.id);
        // 读取的文件数据
        const students = JSON.parse(data).students;
        // 找到修改的数据
        const updateItem = students.find(item => item.id === studentItem.id);
        // 循环赋值
        for (let key in updateItem) {
            updateItem[key] = studentItem[key];
        }
        let result = JSON.stringify({
            students: students
        });
        // 写入文件
        fs.writeFile(dbPath, result, (err) => {
            if (err) {
                callback(err);
            }
            callback();
        });
    });
}

// 查询单个数据接口
exports.findById = (id, callback) => {
    fs.readFile(dbPath, 'utf8', (err, data) => {
        if (err) {
            callback(err);
        }
        // 获取所有学生
        const students = JSON.parse(data).students;
        let findItem = students.find(item => item.id === parseInt(id));
        callback(null, findItem);
    })
}

// 删除
exports.delete = (id, callback) => {
    fs.readFile(dbPath, 'utf8', (err, data) => {
        if (err) {
            callback(err);
        }
        // 获取所有学生
        const students = JSON.parse(data).students;
        let findIndex = students.findIndex(item => item.id === parseInt(id));
        // 删除
        students.splice(findIndex, 1);
        let result = JSON.stringify({
            students: students
        });
        // 写入文件
        fs.writeFile(dbPath, result, (err) => {
            if (err) {
                callback(err);
            }
            callback();
        });
    });
}
